package com.ddxz.middleground.master.service;

import com.ddxz.middleground.master.dto.MasterHeader;
import com.ddxz.middleground.master.dto.permission.PermissionInfo;
import com.ddxz.middleground.master.dto.permission.PermissionPage;
import com.ddxz.middleground.master.util.MasterData;
import com.ddxz.tool.core.common.DdxzTree;
import com.ddxz.tool.web.dto.DdxzResponse;

import java.util.List;

/**
 * interface description
 *
 * @author 朱宗刚
 * @version 1.0.0
 * @date 2020/8/3
 */

public interface PermissionService extends MasterData {
    /**
     * 根据关键字分页检索权限信息
     *
     * @param header 请求头信息
     * @param page   检索信息
     * @return 结果清单
     */
    DdxzResponse permissionList(MasterHeader header, PermissionPage page);

    /**
     * 获取应用权限详情
     *
     * @param header       请求头信息
     * @param permissionId 权限标识
     * @return 权限详情
     */
    DdxzResponse permissionDetail(MasterHeader header, String permissionId);

    /**
     * 保存应用权限信息
     *
     * @param header 请求头信息
     * @param info   权限信息
     * @return 是否保存成功
     */
    DdxzResponse permissionSave(MasterHeader header, PermissionInfo info);

    /**
     * 删除权限信息，如果有角色使用了该权限则不能删除；否则正常删除
     *
     * @param header       请求头信息
     * @param permissionId 权限标识
     * @return 是否删除成功
     */
    DdxzResponse permissionRemove(MasterHeader header, String permissionId);

    /**
     * 将权限与具体的菜单进行绑定
     *
     * @param header       请求头信息
     * @param permissionId 权限标识
     * @param menuTree     新绑定的菜单树
     * @return 是否更新成功
     */
    DdxzResponse permissionGrant(MasterHeader header, String permissionId, List<DdxzTree> menuTree);
}
